<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>32.什么是Proxy代理拦截</title>
</head>
<body>
  <script>
    //代理（拦截器）是对象的访问控制，setter / getter 是对单个对象属性的控制，而代理是对整个对象的控制。

    //  - 读写属性时代码更简洁
    //  - 对象的多个属性控制统一交给代理完成
    //  - 严格模式下 set 必须返回布尔值

    'use strict';
    const hd = {name: '后盾人'};
    const proxy = new Proxy(hd,{
      get(obj,property){
        return obj[property];
      },
      set(obj,property,value){
        obj[property] = value;
        return true;// 不返回 严格模式下会报错
      }
    });
    //// 和设置普通的属性一样，当修改set 属性规则的时候，原有的赋值代码不需要改变
    
    console.log(proxy.name);
    proxy.name = '湘军';
    console.log(proxy.name);
  </script>
</body>
</html>